import htmlDocx from "html-docx-js/dist/html-docx";

/**
 * 导出 HTML 内容为 DOCX 文件
 * @param {HTMLElement} contentRef - 包含导出内容的 DOM 元素（ref 引用）
 * @param {string} fileName - 导出的文件名（默认：文档导出.docx）
 * @param {Object} styles - 自定义样式（可选）
 */
export function exportHtmlToDocx(
  contentRef,
  fileName = "文档导出.docx",
  styles = {}
) {
  // 校验参数
  if (!contentRef || !(contentRef instanceof HTMLElement)) {
    ElMessage.error("导出失败：未找到有效的内容区域");
    return;
  }

  try {
    // 合并默认样式和自定义样式
    const defaultStyles = `
      .xxx { color: black; font-size: 14px; line-height: 1.8; margin: 8px 0; }
      .xxx1 { background-color: #f0f0f0; padding: 12px; margin: 12px 0; font-size: 13px; color: #333; border-left: 3px solid #ccc; }
      .xxx2 { color: #222; font-size: 14px; line-height: 1.8; margin: 8px 0; }
    `;
    const customStyles = Object.entries(styles)
      .map(([className, style]) => `.${className} { ${style} }`)
      .join("\n");

    // 构建完整 HTML 内容
    const htmlContent = `
      <!DOCTYPE html>
      <html>
        <head>
          <meta charset="UTF-8">
          <style>
            ${defaultStyles}
            ${customStyles}
          </style>
        </head>
        <body>
          ${contentRef.innerHTML}
        </body>
      </html>
    `;

    // 转换为 DOCX Blob 并下载
    const docxBlob = htmlDocx.asBlob(htmlContent);
    const url = URL.createObjectURL(docxBlob);
    const a = document.createElement("a");
    a.href = url;
    a.download = fileName;
    document.body.appendChild(a);
    a.click();

    // 释放资源
    setTimeout(() => {
      document.body.removeChild(a);
      URL.revokeObjectURL(url);
    }, 100);

    ElMessage.success("DOCX 导出成功！");
  } catch (error) {
    console.error("导出失败：", error);
    ElMessage.error(`导出失败：${error.message}`);
  }
}
